/**
 * Created by Administrator on 2017/10/17.
 */

var mongoose = require('mongoose');
const DataModel=require('../models/cate.model');//引入自定义的模块


//添加参数
exports.create=function (req,res,next) {
    const dataModel=new DataModel(req.body);//通过mongoose模块，获得参数
    dataModel.save()
        .then(data=>{
            res.json(data);
        })
};



//查找参数
exports.get=function (req,res,next) {
    //获得id
    var id=req.params.id;
    DataModel.findById(id,function (err,data) {
        res.json(data);
    });
};


//修改参数
exports.update=function (req,res,next) {

    //获得id
    var id=req.params.id;


    DataModel.findByIdAndUpdate(id,{$set:req.body},{new:false}).then(data=>{
        res.json(data);//输出的是改之前的结果
    })

};


//删除数据
exports.remove=function (req,res,next) {
    const id = req.params.id;
    var ids=[];
    DataModel.findOne({_id:id},function (err,doc) {
        if(doc){
            ids = [doc._id];
            doc.getChildren().then(function (err,docs) {
                for (var i = 0; i < docs.length; i++) {
                    ids.push(docs[i]._id);
                }
            });
            DataModel.remove({ _id : {$in : ids}})
                .then(data=>{
                    res.json({"msg":"成功","status":200})
                })
        }
    })
};


//递归函数，转对象
function reverseTree(data,pid) {
    var result = [];
    var  temp;
    var data=JSON.parse(JSON.stringify(data));//将一个DataModel的object

    //循环对象，判断parentId是否相等

    for(var i in data){
        if(data[i].parentId==pid){
            result.push(data[i])//相等放到数组里，继续调用函数
            temp = reverseTree(data,data[i]._id);
            if(temp.length>0){
                data[i].children=temp;
            }
        }
    }

    return result;
}



//列表数据
exports.list=function (req,res,next) {

    DataModel.find({},function (err,data) {

        //调用回调函数
        var rpTree=reverseTree(data,null);

        res.json(rpTree);//得到的结果以json形式输出


    })

};



























